package com.ly.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ly.common.core.bean.R;
import com.ly.common.core.bean.dto.CommonBatchUpdateDTO;
import com.ly.common.core.bean.vo.DictVO;
import com.ly.system.system.bean.dto.FieldCheckDTO;
import com.ly.system.system.bean.entity.SysDict;

import java.util.List;
import java.util.Map;

/**
 * 字典类型-service
 *
 * @author jeecg
 * @since 2018-12-28
 */
public interface ISysDictService extends IService<SysDict> {

    /**
     * 查询-id
     */
    R getId(String id);

    /**
     * 列表
     *
     * @param entity
     * @return
     */
    R getList(SysDict entity);

    /**
     * 分页
     */
    R getPage(SysDict entity, Page<SysDict> page);

    /**
     * 新增
     */
    R add(SysDict entity);

    /**
     * 修改
     */
    R edit(SysDict entity);

    /**
     * 删除-id
     */
    R delete(String id);

    /**
     * 批量删除
     */
    R deleteBatch(String ids);

    /**
     * 批量新增或修改
     */
    R updateBatch(CommonBatchUpdateDTO<SysDict> dto);

    /**
     * 字段重复校验
     *
     * @param dto
     * @return
     */
    @Deprecated
    R duplicateCheckData(FieldCheckDTO dto);

    /**
     * 通过字典code获取字典数据
     *
     * @param code
     * @return
     */
    List<DictVO> queryDictItemsByCode(String code);

    /**
     * 刷新缓存
     * @return
     */
    R refreshCache();

    /**
     * 登录加载系统字典
     *
     * @return
     */
    Map<String, List<DictVO>> queryAllDictItems();

    /**
     * 通过字典code及字典项的value获取字典文本
     *
     * @param code
     * @param key
     * @return
     */
    String queryDictTextByKey(String code, String key);


    /**
     * 获取字典数据
     *
     * @param dictCode 字典code
     * @param dictCode 表名,文本字段,code字段  | 举例：sys_user,realname,id
     * @return
     */
    List<DictVO> getDictItems(String dictCode);
}
